import md5 from 'js-md5'
function formatTime(time) {
	if (typeof time !== 'number' || time < 0) {
		return time
	}

	var hour = parseInt(time / 3600)
	time = time % 3600
	var minute = parseInt(time / 60)
	time = time % 60
	var second = time

	return ([hour, minute, second]).map(function (n) {
		n = n.toString()
		return n[1] ? n : '0' + n
	}).join(':')
}

function formatLocation(longitude, latitude) {
	if (typeof longitude === 'string' && typeof latitude === 'string') {
		longitude = parseFloat(longitude)
		latitude = parseFloat(latitude)
	}

	longitude = longitude.toFixed(2)
	latitude = latitude.toFixed(2)

	return {
		longitude: longitude.toString().split('.'),
		latitude: latitude.toString().split('.')
	}
}
var dateUtils = {
	UNITS: {
		'年': 31557600000,
		'月': 2629800000,
		'天': 86400000,
		'小时': 3600000,
		'分钟': 60000,
		'秒': 1000
	},
	humanize: function (milliseconds) {
		var humanize = '';
		for (var key in this.UNITS) {
			if (milliseconds >= this.UNITS[key]) {
				humanize = Math.floor(milliseconds / this.UNITS[key]) + key + '前';
				break;
			}
		}
		return humanize || '刚刚';
	},
	format: function (dateStr) {
		var date = this.parse(dateStr)
		var diff = Date.now() - date.getTime();
		if (diff < this.UNITS['天']) {
			return this.humanize(diff);
		}
		var _format = function (number) {
			return (number < 10 ? ('0' + number) : number);
		};
		return date.getFullYear() + '/' + _format(date.getMonth() + 1) + '/' + _format(date.getDate()) + '-' +
			_format(date.getHours()) + ':' + _format(date.getMinutes());
	},
	parse: function (str) { //将"yyyy-mm-dd HH:MM:ss"格式的字符串，转化为一个Date对象
		var a = str.split(/[^0-9]/);
		return new Date(a[0], a[1] - 1, a[2], a[3], a[4], a[5]);
	}
};

  // 剩余时间(毫秒)处理转换时间
  function transformRemainTime(millisecond) {
    // 秒数
    var seconds = Math.floor(millisecond / 1000);
    // 天数
    var days = formatZero(Math.floor(seconds / 3600 / 24));
    // 小时
    var hours = formatZero(Math.floor(seconds / 3600 % 24));
    // 分钟
    var minutes = formatZero(Math.floor(seconds / 60 % 60));
    // 秒
    var second = formatZero(Math.floor(seconds % 60));
    var str = '';
     if(days==0&&hours!=0){
    	   str = hours + ":" + minutes + ":" + second
     }else if(days==0&&hours==0){
    	   str = minutes + ":" + second
     }else{
    	   str = days + ":" + hours + ":" + minutes + ":" + second
     }
     return str;
  };
  //格式化时间为2位
  function formatZero(time){
    if(time < 10)
      return '0' + time;
    return time;
  };

function showToast(options){//封装Toast
	let { title,duration,icon } = options;
	uni.showToast({
		title:title,
		duration: 2000,
		icon:icon || "none"
	});
};
function isToday(str) {
   return new Date().getTime() - new Date(str).getTime() < 86400000;
}

function getSign(params,timestamp,key,secret) {
    if (typeof params == "string") {
        return paramsStrSort(params,secret);
    } else if (typeof params == "object") {
        var arr = [];
        for (var i in params) {
            arr.push((i + "=" + fixedEncodeURIComponent(params[i])));
        }
		arr.push('timestamp='+timestamp);
		arr.push('key='+key);
        return paramsStrSort(arr.join(("&")),secret);
    }
};
function fixedEncodeURIComponent (str) {
  return encodeURIComponent(str).replace(/[~!*()']/g, function(c) {
    return '%' + c.charCodeAt(0).toString(16);
  });
}
function paramsStrSort(paramsStr,secret) {
    var url = paramsStr;
  /*  url = paramsStr + "&timestamp=" + timestamp+ "&key=" + key; */
    var urlStr = url.split("&").sort().join("&");
    var newUrl = urlStr+ secret;
    //console.log(newUrl);
	//console.log(md5(newUrl));
    return md5(newUrl);
}
function noThisFun(){
	showToast({
		title: '此功能暂未开发，敬请期待！'
	});
}
function goTo(url){
	uni.navigateTo({
		 url: url
	})
}

module.exports = {
	formatTime: formatTime,
	formatLocation: formatLocation,
	dateUtils: dateUtils,
	transformRemainTime:transformRemainTime,
	showToast: showToast,
	getSign:getSign,
	noThisFun:noThisFun,
	isToday:isToday,
	goTo:goTo
}
